package com.algorithm.liyc.practice;


/**
 * 二分查找
 *  给定一个 n 个元素有序的（升序）整型数组 nums 和一个目标值 target，
 *  写一个函数搜索 nums 中的 target，如果目标值存在返回下标，否则返回 -1。
 *  边界条件：数组为有序数组、数组中无重复元素
 */
public class Solution1 {
    public int search(int[] nums, int target){
        if (target < nums[0] || nums[nums.length -1] < target) {
            return -1;
        }
        int left = 0;
        int regit = nums.length -1;
        while (left <= regit) {
            int middle = left + ((regit - left)/2);
            if (target < nums[middle]) {
                regit = middle - 1;
            } else if (target > nums[middle]) {
                left = middle + 1;
            } else if (target == nums[middle]) {
                return middle;
            }
        }
        return -1;
    }
}